#pragma onece
#include "systemc.h"

#define SIZE_BYTE 0b00
#define SIZE_HALF 0b01
#define SIZE_WORD 0b10

	sc_signal<sc_int<32>>  x1 [0:7]	;
	sc_signal<sc_int<32>>  x2 [0:7]	;
	sc_signal<sc_int<32>>  y1 [0:7]	;
	sc_signal<sc_int<32>>  y2 [0:7]	;
	sc_signal<sc_int<32>>  k  [0:7]	;
	sc_signal<sc_int<32>>  control_reg;
	sc_signal<sc_int<32>>  x3 [0:7]	;
	sc_signal<sc_int<32>>  y3 [0:7]	;
	sc_signal<sc_int<32>>  x3_1,x3_2,x3_3,x3_4,x3_5,x3_6,x3_7,x3_8;
	sc_signal<sc_int<32>>  y3_1,y3_2,y3_3,y3_4,y3_5,y3_6,y3_7,y3_8;

	sc_signal<sc_int<32>>  status_reg;
//wire  sm2_vic_int;

	sc_signal<sc_int<32>>  	rdata;

	sc_signal<sc_int<2>>  	HTRANS_reg;
	sc_signal<sc_int<12>>  Reg_ofs_addr_ff;
	sc_signal<sc_int<12>>  SM2_ofs_addr;
	sc_signal<sc_int<3>>   HSIZE_reg;

//    assign ahb_trans_clear = hready && !hsel;
////////////////ADDR,TRANS,WRITE signal input//////////////////////
	void always_block0();
//////////////////////control_reg input//////////////////////////////////
	void always_block0();//	else if( (status_reg[3:0] == 4'h2)&&(`SM2_Reg_addr==addr_x3)&&(!HWRITE_reg)&&(HTRANS_reg[1])&&(HSEL_reg)&&(HSIZE_reg == `SIZE_WORD) )		//Compute finish and read X3
//		control_reg[4] <=	1;	//???
//////////////////////HWDATA input//////////////////////////////////////// 
	void always_block0();
//////////////////////HRDATA output//////////////////////////////////////// 
	void always_block0();
//sim
	void always_block0();
	void always_block0();	void always_block0();	SC_CTOR(my_module)
	{
		SC_METHOD(always_block0);
		sensitive< <HCLK.pos()< <HRESETn.neg();		SC_METHOD(always_block0);
		sensitive< <HCLK.pos()< <HRESETn.neg();		SC_METHOD(always_block0);
		sensitive< <HCLK.pos()< <HRESETn.neg();		SC_METHOD(always_block0);
		sensitive< <HCLK.pos()< <HRESETn.neg();		SC_METHOD(always_block0);
		sensitive;		SC_METHOD(always_block0);
		sensitive;		SC_METHOD(always_block0);
		sensitive;
	}
};